var selectedRow = '';
var def_editType = 'add';

$(function () {
    regValidate(["#paramDataForm"]);
    // initDateTime('#modalParamValue_dateTime');
    // initDateTime('#modalDefaultValue_dateTime');
    // initDate('#modalParamValue_date');
    // initDate('#modalDefaultValue_date');
    laydate.render({
        elem: '#modalParamValue_dateTime'
        ,type: 'datetime'
        ,zIndex: 99999999
        ,done: function(value, date, endDate){
            //控件选择完毕后的回调
            //点击日期、清空、现在、确定均会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
            setTimeout(function () {
                //datetime时确定有点恶心，延时100ms
                $("#modalParamValue_dateTime").valid();
            }, 100);
        }
    });
    laydate.render({
        elem: '#modalDefaultValue_dateTime'
        ,type: 'datetime'
        ,done: function(value, date, endDate){
            //控件选择完毕后的回调
            //点击日期、清空、现在、确定均会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
            setTimeout(function () {
                //datetime时确定有点恶心，延时100ms
                $("#modalDefaultValue_dateTime").valid();
            }, 100);
        }
    });
    laydate.render({
        elem: '#modalParamValue_date'
        ,done: function(value, date, endDate){
            //控件选择完毕后的回调
            //点击日期、清空、现在、确定均会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
            setTimeout(function () {
                //datetime时确定有点恶心，延时100ms
                $("#modalParamValue_date").valid();
            }, 100);
        }
    });
    laydate.render({
        elem: '#modalDefaultValue_date'
        ,done: function(value, date, endDate){
            //控件选择完毕后的回调
            //点击日期、清空、现在、确定均会触发。回调返回三个参数，分别代表：生成的值、日期时间对象、结束的日期时间对象
            setTimeout(function () {
                //datetime时确定有点恶心，延时100ms
                $("#modalDefaultValue_date").valid();
            }, 100);
        }
    });
    window.actionEvents = {
        'click .infoView': function(e, value, row, index) {
            //编辑操作
            selectedRow = row;
            openEnumPage();
        },
    }
});

$('#editSysParamPage').on('hidden.bs.modal', function () {
    // 执行一些动作...
    resetFormTip('#paramDataForm');
    resetInputCss('#paramDataForm');
});

// dataTable
$('#dataTable').on("click-row.bs.table", function (e, row, $element) {
    // checkBox 的勾选
    // var index = $element[0].rowIndex - 1;
    // $('#dataTable').bootstrapTable('uncheckAll');
    // $('#dataTable').bootstrapTable('check', index);
    $('#dataTable .success').removeClass('success');//去除之前选中的行的，选中样式
    $element.addClass('success');//添加当前选中的 success样式用于区别
    changeStatueBtn(row.status == 'enabled',"冻结","恢复");
    selectedRow = row;
});

function doRefresh() {
    selectedRow = '';
    var paramName = $.trim($('#paramName').val());
    $('#dataTable').bootstrapTable('refresh', {
        url: basePath + 'sysParam/pageFindSysParamData?t=' + new Date().getTime(),
        query: {
            paramName : paramName
        },
    });
}

function getParams(params) {
    var paramName = $.trim($('#paramName').val());
    return {
        paramName : paramName,
        // groupCode : sysDictCode,
        pageSize : params.pageSize,
        pageNo : params.pageNumber
    };
}

function openAddSysParamPage() {
    def_editType = 'add';
    $('#_modelTitle').html('新增参数');
    clearEditParamPageData();
    doDataTypeChange();
    $('#editSysParamPage').modal('show');
    $('#modalParamCode').removeAttrs('readonly');
}

function openEditSysParamPage() {
    def_editType = 'edit';
    if (!selectedRow || !selectedRow.id) {
        toastr.error(common_no_choose_msg.format("编辑"));
        return;
    }
    $('#_modelTitle').html('编辑参数');
    clearEditParamPageData();
    fillEditParamPageData(selectedRow);
    doDataTypeChange();
    $('#editSysParamPage').modal('show');
    $('#modalParamCode').attr('readonly', 'readonly');
}

function closeEditSysParamPage() {
    $('#editSysParamPage').modal('hide');
    resetFormTip('#paramDataForm');
    resetInputCss('#paramDataForm');
}

function doSaveSysParam() {
    if(!$("#paramDataForm").valid()) return;//校验不通过
    var paramCode = $.trim($('#modalParamCode').val());
    var paramName = $.trim($('#modalParamName').val());
    var sysType = $.trim($('#modalSysType').val());
    var bizModule = $.trim($('#modalBizModule').val());
    var dataType = $.trim($('#modalDataType').val());
    var paramValue = '';
    var defaultValue = '';
    if(dataType == 'datetime') {
        paramValue = $.trim($('#modalParamValue_dateTime').val());
        defaultValue = $.trim($('#modalDefaultValue_dateTime').val());
    } else if(dataType == 'date'){
        paramValue = $.trim($('#modalParamValue_date').val());
        defaultValue = $.trim($('#modalDefaultValue_date').val());
    } else {
        paramValue = $.trim($('#modalParamValue').val());
        defaultValue = $.trim($('#modalDefaultValue').val());
    }
    var remark = $.trim($('#remark').val());
    var postData = {
        paramCode : paramCode,
        paramName : paramName,
        sysType : sysType,
        bizModule : bizModule,
        dataType : dataType,
        paramValue : paramValue,
        defaultValue : defaultValue,
        remark : remark,
    };
    var url = basePath + 'sysParam/insertSysParam';
    if (def_editType == 'edit') {
        url = basePath + 'sysParam/editSysParam';
        postData.id = selectedRow.id;
    }
    $.ajax({
        type: 'post',
        url: url,
        dataType: 'json',
        contentType: "application/json",
        data: JSON.stringify(postData),
        success : function (data) {
            if(data && data.isSuccess){
                toastr.success(common_save_success);
                closeEditSysParamPage();
                doRefresh();
            }else if(data&&!data.isSuccess){
                if (data.errorCode == 'EXIST') {
                    toastr.error('此参数已存在，无需重复添加');
                    return;
                }
                if (data.errorCode == 'EXIST_CODE') {
                    toastr.error('此参数编码已存在，无法重复添加');
                    return;
                }
                toastr.error(data.errorDesc);
            }else{
                toastr.error(common_save_fail);
            }
        },
        error: function (request) {
            toastr.error(common_system_error);
        }
    });
}

function doDelete() {
    var postData = {
        id : selectedRow.id,
        paramCode: selectedRow.paramCode,
        sysType : selectedRow.sysType,
        status : 'delete'
    };
    $.ajax({
        type: 'post',
        url: basePath + 'sysParam/deleteSysParam',
        dataType: 'json',
        contentType: "application/json",
        data: JSON.stringify(postData),
        success : function (data) {
            if(data && data.isSuccess){
                toastr.success('删除成功');
                doRefresh();
            }else if(data&&!data.isSuccess){
                toastr.error(data.errorDesc);
            }else{
                toastr.error('删除失败');
            }
        },
        error: function (request) {
            toastr.error(common_system_error);
        }
    });
}

function deleteSysParam() {
    if (!selectedRow || !selectedRow.id) {
        toastr.error(common_no_choose_msg.format("删除"));
        return;
    }
    swalToastr('删除参数',  '确定删除参数吗？', 'warning', doDelete);
}

function changeState() {
    if (!selectedRow || !selectedRow.status) {
        toastr.error(common_no_choose_msg.format("操作"));
        return;
    }
    var status =  (selectedRow.status == 'disabled') ?'enabled':'disabled';
    var postData = {
        id: selectedRow.id,
        paramCode: selectedRow.paramCode,
        sysType : selectedRow.sysType,
        status: status
    };
    $.ajax({
        type: 'post',
        url: basePath + 'sysParam/editSysParam',
        dataType: 'json',
        contentType: "application/json",
        data: JSON.stringify(postData),
        success : function (data) {
            if(data && data.isSuccess){
                toastr.success('操作成功');
                doRefresh();
            }else{
                toastr.error('操作失败');
            }
        },
        error: function (request) {
            toastr.error(common_system_error);
        }
    });
}

function doDataTypeChange() {
    var dataType = $('#modalDataType').val();
    $('#modalParamValueFromGroup').addClass('hideItem');
    $('#modalDefaultValueFromGroup').addClass('hideItem');
    $('#modalParamValue_dateTimeFromGroup').addClass('hideItem');
    $('#modalDefaultValue_dateTimeFromGroup').addClass('hideItem');
    $('#modalParamValue_dateFromGroup').addClass('hideItem');
    $('#modalDefaultValue_dateFromGroup').addClass('hideItem');
    $('#modalParamValue').removeAttrs("isInteger");
    $('#modalDefaultValue').removeAttrs("isInteger");
    $('#modalParamValue').removeAttrs("isFloat");
    $('#modalDefaultValue').removeAttrs("isFloat");
    if(dataType == 'datetime') {
        $('#modalParamValue_dateTimeFromGroup').removeClass('hideItem');
        $('#modalDefaultValue_dateTimeFromGroup').removeClass('hideItem');
    } else if(dataType == 'date'){
        $('#modalParamValue_dateFromGroup').removeClass('hideItem');
        $('#modalDefaultValue_dateFromGroup').removeClass('hideItem');
    } else {
        $('#modalParamValueFromGroup').removeClass('hideItem');
        $('#modalDefaultValueFromGroup').removeClass('hideItem');
        if(dataType == 'int'){
            $('#modalParamValue').attr("isInteger", "true");
            $('#modalDefaultValue').attr("isInteger", "true");
        } else if(dataType == 'float'){
            $('#modalParamValue').attr("isFloat", "true");
            $('#modalDefaultValue').attr("isFloat", "true");
        }
    }
}

function clearEditParamPageData() {
    $('#modalParamCode').val("");
    $('#modalParamName').val("");
    $('#modalSysType').val("");
    $('#modalBizModule').val("");
    $('#modalDataType').val("");
    $('#modalParamValue_dateTime').val("");
    $('#modalDefaultValue_dateTime').val("");
    $('#modalParamValue_date').val("");
    $('#modalDefaultValue_date').val("");
    $('#modalParamValue').val("");
    $('#modalDefaultValue').val("");
    $('#remark').val("");
}

function fillEditParamPageData(selectedRow) {
    if(!selectedRow){
        return;
    }
    $('#modalParamCode').val(selectedRow.paramCode);
    $('#modalParamName').val(selectedRow.paramName);
    $('#modalSysType').val(selectedRow.sysType);
    $('#modalBizModule').val(selectedRow.bizModule);
    $('#remark').val(selectedRow.remark);
    $('#modalDataType').val(selectedRow.dataType);
    if(selectedRow.dataType == 'datetime') {
        $('#modalParamValue_dateTime').val(selectedRow.paramValue);
        $('#modalDefaultValue_dateTime').val(selectedRow.defaultValue);
    } else if(selectedRow.dataType == 'date'){
        $('#modalParamValue_date').val(selectedRow.paramValue);
        $('#modalDefaultValue_date').val(selectedRow.defaultValue);
    } else {
        $('#modalParamValue').val(selectedRow.paramValue);
        $('#modalDefaultValue').val(selectedRow.defaultValue);
    }
}

function formatterStatus(value, row, index){
    return convertMapCodeText(statusMap,value);
}

function formatterDataType(value, row, index){
    return convertMapCodeText(dataTypeMap,value);
}

function formatterSysType(value, row, index){
    return convertListCodeText(sysParamBizList,value,'dictCode','dictName');
}

function formatterBizModule(value, row, index){
    return convertListCodeText(sysParamBizModuleList,value,'dictCode','dictName');
}

function doSyncRedis() {
    var postData = {};
    var url = basePath + 'sysParam/syncRedis?t=' + new Date().getTime();
    showLoading();
    $.ajax({
        type: 'post',
        url: url,
        dataType: 'json',
        data: postData,
        success : function (data) {
            hideLoading();
            if(data && data.isSuccess){
                toastr.success('同步成功');
            }else{
                toastr.error('同步失败');
            }
        },
        error: function (request) {
            hideLoading();
            toastr.error(common_system_error);
        }
    });
}
